<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <div id="app">
    <div>
      <span>用户名：</span>
      <span>
        <!--1、获取v-model 将值同步到data中 -->
        <input type="text" v-model.lazy='val'>
      </span>
      <span>{{tip}}</span>
    </div>
  </div>
  <script src="../vue.js"></script>
  <script>
    var vm = new Vue({
      el: '#app',
      data: {
        val: '',//用户输入的值
        tip: ''//用户提示的信息
      },
      methods: {
        // 处理验证的逻辑
        validVal(newVal) {
          // newVal 形参 内容为输入框中改变后的内容
          setTimeout(() => {
            /* 箭头函数this不指向window 如果不用箭头函数 
            this指向window 这样的话只能在外面定义一个this 如：var that = this 在定时器之外。 */
            if (newVal === 'admin') {
              // 判断输入的值是否等于admin，如果等于就存在，否则同下
              this.tip = '用户名已经存在，请换一个'
            } else {
              this.tip = '用户可以使用....'
            }
          }, 2000)
        }
      },
      watch: {
        // 2、对用户输入的值val 进行监听
        val: function (newVal) {
          this.tip = '正在验证中...'
          // 侦听器使用时，改变tip的值 进行使用
          this.validVal(newVal)
        }
      }

    })
  </script>
</body>

</html>